package com.xusj.function

/**
 * 函数功能基本操作 ( 查看 functionDefine)
 *
 * 函数字面量表示函数可以赋值给变量
 * Scala函数将最后的值作为函数的返回值，不需要return语句
 *
 * @author xushijian
 * @date 2020/5/18 10:53
 *
 */
object FunctionBasic {

  def main(args: Array[String]): Unit = {

    println(increase(5))


    //函数式编程
    val inc = (x: Int) => x + 1
    println(inc(1))

    //集合的map函数可以对集合中的每个元素进行操作，
    // 接受的参数为针对元素进行操作的函数，
    // 例如相对List(1, 2, 3,4,5)集合中每个元素加1，可以使用以下方法
    println(List(1, 2, 3, 4, 5).map(inc))

    println(List(1, 2, 3, 4, 5).map((x: Int) => x + 2))

    //函数简化
    println(List(1, 2, 3, 4, 5).map((x) => x + 2))

    println(List(1, 2, 3, 4, 5).map(x => x + 2))

    println(List(1, 2, 3, 4, 5).map(_ + 2))

    println(List(1, 2, 3, 4, 5).map {
      _ + 2
    })
  }

  //常规定义函数字面量
  def increase(x: Int): Int = {
    x + 1
  }
}
